/**
 领导驾驶舱
 **/
import { http } from "@/utils/http";
export interface QueryEquipmentStatusByClassRes {
  /*设备状态 */
  eqpRunStatus: string;

  /*设备状态描述 */
  eqpRunStatusDesc: string;

  /*设备状态数 */
  statusNum: number;
}

/**
 * 根据设备课室查询所有设备状态数
 * @param {object} params QueryClassDTO
 * @param {string} params.facCode 厂区编码
 * @param {string} params.className 所属科室:'WATER'-水课,'ELECTRICTITY'-电课,'GAS'-气课,'MACHINE'-机械课
 * @returns
 */
export function queryEquipmentStatusByClass(data): Promise<QueryEquipmentStatusByClassRes[]> {
  return http.post(`/digitaltwins/api/v1/publish/equipment/queryEquipmentStatusByClass`, { data });
}
export interface QueryInspectTaskStatusCountRes {
  /*总数量 */
  totalCount: number;

  /*未开始数量 */
  undoCount: number;

  /*已取消数量 */
  cancelCount: number;

  /*执行中数量 */
  doingCount: number;

  /*完成数量 */
  completedCount: number;

  /*其他数量 */
  otherCount: number;
}
// 点检任务-点检任务统计
export const queryPointCheckCount = (data?: Record<string, any>): Promise<QueryInspectTaskStatusCountRes> => {
  return http.request("post", `/digitaltwins/api/v1/pointCheckTask/queryPointCheckCount`, {
    data
  });
};

// 维修工单任务状态统计
export const queryWorkOrderStatusCount = (data?: Record<string, any>): Promise<QueryInspectTaskStatusCountRes> => {
  return http.request("post", `/digitaltwins/api/v1/maintenanceWorkOrder/queryWorkOrderStatusCount`, {
    data
  });
};

// 巡检任务-巡检任务状态统计
export const queryInspectTaskCount = (data?: Record<string, any>): Promise<QueryInspectTaskStatusCountRes> => {
  return http.request("post", `/digitaltwins/api/v1/inspectTask/queryInspectTaskCount`, {
    data
  });
};

// 领导驾驶舱获取设备保养任务数
export const queryJobsNumForLeader = (data?: Record<string, any>) => {
  return http.request("post", `/pms/publish/queryJobsNumForLeader`, {
    data
  });
};
export interface GetFabStatusTotalNum_1Res {
  /*机台状态 */
  eqpStatus: string;

  /*数量 */
  num: number;
}

/**
 * 看板-今日机台状态统计
 * @param {string} areaCode
 * @returns
 */
export function getFabStatusTotalNum_1(areaCode: string): Promise<GetFabStatusTotalNum_1Res[]> {
  return http.get(`/fab/api/v1/board/eqp/now/status?areaCode=${areaCode}`);
}
export interface GetFabDayPmTotalNum_1Res {
  /*机台状态 */
  pmStatus: string;

  /*机台状态名称 */
  pmStatusName: string;

  /*数量 */
  num: number;
}

/**
 * 看板-今日机台保养任务
 * @param {string} areaCode
 * @returns
 */
export function getFabDayPmTotalNum_1(areaCode: string): Promise<GetFabDayPmTotalNum_1Res[]> {
  return http.get(`/fab/api/v1/board/eqp/day/pm?areaCode=${areaCode}`);
}
export interface GetFabDayMaintainTotalNum_2Res {
  /*机台维修状态 */
  deviceMaintain: string;

  /*机台维修状态名称 */
  deviceMaintainName: string;

  /*数量 */
  num: number;
}
/**
 * 看板-今日机台维修任务
 * @param {string} areaCode
 * @returns
 */
export function getFabDayMaintainTotalNum_2(areaCode: string): Promise<GetFabDayMaintainTotalNum_2Res[]> {
  return http.get(`/fab/api/v1/board/eqp/day/maintain?areaCode=${areaCode}`);
}
export interface GetFabAlarmRes {
  /*报警状态 */
  alarmStatus: string;

  /*报警状态名称 */
  alarmStatusName: string;

  /*数量 */
  num: number;
}
/**
 * 看板-今日机台异常告警
 * @param {string} areaCode
 * @returns
 */
export function getFabAlarm(areaCode: string): Promise<GetFabAlarmRes[]> {
  return http.get(`/fab/api/v1/board/eqp/day/alarm?areaCode=${areaCode}`);
}
export interface QueryLastScadaValueRes {
  /*内部服务报错信息 */
  innerServiceErrorMsg: string;

  /*查询出的记录数 */
  total: number;

  /*每页记录数 */
  pageSize: number;

  /*当前第几页 */
  currentPageNum: number;

  /*查询结果的总页数 */
  totalPage: number;

  /*查询记录集合List<Map<String,Object>> */
  rows: Record<string, any>[];

  /*查询记录集合JSON */
  jsonRows: string;
}

/**
 * 查询时序库中Scada点位实时最新值。返回值：List<Map<String, Object>>类型，其中Map表示一行记录，key是查询出来的字段名，value是查询的值
 * @param {array} data string
 * @returns
 */
export function queryLastScadaValue(data: any[]): Promise<QueryLastScadaValueRes> {
  return http.post(`/data/api/v1/dataQuery/queryLastScadaValue`, { data });
}
export interface QueryScadaIndicatorRes {
  /*内部服务报错信息 */
  innerServiceErrorMsg: string;

  /*查询出的记录数 */
  total: number;

  /*每页记录数 */
  pageSize: number;

  /*当前第几页 */
  currentPageNum: number;

  /*查询结果的总页数 */
  totalPage: number;

  /*查询记录集合List<Map<String,Object>> */
  rows: Record<string, any>[];

  /*查询记录集合JSON */
  jsonRows: string;
}

/**
 * 查询时序库中的Scada指标数据
 * @param {object} params ScadaIndicatorDTO
 * @param {number} params.bucketWidth 时间间隔数字 1,2,3,4....
 * @param {string} params.bucketUnit 时间间隔单位 minutes/hour/day/week/months
 * @param {object} params.startTime 开始时间序列
 * @param {object} params.endTime 结束时间序列
 * @param {array} params.point 点位名称，支持多个点位名称查询
 * @param {array} params.indicators 统计指标常量：AVG/MAX/MIN/COUNT/FIRST/LAST/SUM
 * @param {number} params.pageNum 当前第几页
 * @param {number} params.pageSize 每页显示记录数
 * @param {string} params.contentType 查询结果返回数据格式类型，JSON 或者 LIST,可用值:JSON,LIST
 * @returns
 */
export function queryScadaIndicator(data): Promise<QueryScadaIndicatorRes> {
  return http.post(`/data/api/v1/dataQuery/queryScadaIndicator`, { data });
}
export interface QueryResultCountRes {
  /*总数量 */
  totalCount: number;

  /*oow总数量 */
  totalOowCount: number;

  /*ooc总数量 */
  totalOocCount: number;

  /*oos总数量 */
  totalOosCount: number;

  /*oo3总数量 */
  totalOo3Count: number;

  /*单个指标的统计数量 */
  resultCountDTOList: {
    /*作业id */
    jobId: string;

    /*SPC指标表ID */
    indicatorId: number;

    /*oow数量 */
    oowCount: number;

    /*ooc数量 */
    oocCount: number;

    /*oos数量 */
    oosCount: number;

    /*oo3数量 */
    oo3Count: number;
  }[];
}

/**
 * 查询告警数量
 * @param {object} params QuerySpcAnalysisResultCountReqDTO
 * @param {array} params.jobIdList 作业id
 * @param {array} params.pointList 点位
 * @param {string} params.classCode 所属课室(WATER-水课,ELECTRICTITY-电课,GAS-气课,MACHINE-机械课)
 * @param {object} params.startTime 开始日期
 * @param {object} params.endTime 结束日期
 * @returns
 */
export function queryResultCount(data): Promise<QueryResultCountRes> {
  return http.post(`/operation/api/v1/spcIndicator/queryResultCount`, { data });
}

/**
 * 获取量-金额-碳排放-折标煤
 * @param {object} params QueryCoalEmissionDTO
 * @param {string} params.endDate 当前时间
 * @param {number} params.bucketWidth 时间间隔数字 0-当前 大于0 - 往前追溯
 * @param {string} params.bucketUnit 时间间隔单位 months-月 years-年 day-日
 * @returns
 */
export function queryQtyAmtEcarbonScoal(data) {
  return http.post(`/energy/energyOverview/queryQtyAmtEcarbonScoal`, { data });
}
